package com.terrace.core.spring.ehcache.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 缓存清除
 * 
 * @author jiangyg
 *
 */
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface EhCacheEvict {

	/**
	 * 缓存名称--默认为diskCache
	 * @return
	 */
	String name() default "diskCache";

	/**
	 * 缓存key
	 * 
	 * @return
	 */
	String[] key() default "";
	
	/**
	 * 是否清空所有缓存内容，缺省为 false，
	 * 如果指定为 true，则方法调用后将立即清空所有缓存
	 * @return
	 */
	boolean all() default false; 
	
	/**
	 * 是否在方法执行前就清空，缺省为 false，
	 * 如果指定为 true，则在方法还没有执行的时候就清空缓存，
	 * 缺省情况下，如果方法执行抛出异常，则不会清空缓存
	 * @return
	 */
	boolean beforeInvocation() default false;

}
